import Vue from 'vue';

interface DataType {
  /** bind */
  //数据，或者一个筛选后的结果
  dataList: any[],
  //当前页
  currentPage: number,
  //每页多少条
  pageSize: number,
  /** unbind */
}

interface MethodsType {
}

interface ComputedType {
  //每页的数据
  pagedData: any[],
  //数据总数
  dataCount: number
}

interface PropsType {
}

export default Vue.extend<DataType, MethodsType, ComputedType, PropsType>({
  name: "LocalPagination",
  data() {
    return {
      //数据，或者一个筛选后的结果
      dataList: Array.from({length: 100}).map((x, i) => i),
      //当前页
      currentPage: 1,
      //每页多少条
      pageSize: 10,
    }
  },
  computed: {
    //每页的数据
    pagedData() {
      return this.dataList.slice((this.currentPage - 1) * this.pageSize, this.currentPage * this.pageSize);
    },
    //数据总数
    dataCount() {
      return this.dataList.length;
    },
  }
})
